<?php
/**
*验证码类
*/
class CaptchaLib {
	private $length;	//验证码的长度
	private $font;	//设置字号
	//初始化成员变量
	public function __construct($font=5,$length=4) {
		$this->font=$font;
		$this->length=$length;
	}
	//生成随机字符串
	private function generalCode() {
		$array=array_merge(range('A','Z'),range('0','9'));	//字符数组
		$index=array_rand($array,$this->length);	//随机抽取4个元素
		shuffle($index);				//打乱元素
		$str='';
		//拼接字符串
		foreach($index as $i) {
			$str.=$array[$i];
		}
                $_SESSION['code']=$str; //将生成的验证码放到会话中
		return $str;
	}
	//将字符串写到图片上
	public function generalCaptcha() {
		$str=$this->generalCode();
		$bg=LIB_PATH.'captcha/captcha_bg'.rand(1,5).'.jpg';	//随机拼接背景图的路径
		$img=imagecreatefromjpeg($bg);		//打开背景图
		//设置字符串在图片上的起始位置（居中）
		$x=(imagesx($img)-imagefontwidth($this->font)*$this->length)/2;
		$y=(imagesy($img)-imagefontheight($this->font))/2;
		//设置字体颜色
		$color=imagecolorallocate($img,0,0,0);
		if(rand(1,2)==2)
			$color=imagecolorallocate($img,255,255,255);
		imagestring($img,$this->font,$x,$y,$str,$color);	//将字符串写到图片上
		header('Content-Type:image/jpeg');			//告知浏览器按jpeg格式执行
		imagejpeg($img);							//显示jpeg格式
		imagedestroy($img);		//销毁图片
	}
        /*
         * 验证验证码是否正确,不区分大小写
         */
        public function checkCode($code){
            return strtolower($_SESSION['code'])==strtolower($code);
        }
}
?>